package com.zrrd.learn.chapter04;

import java.util.Arrays;

/**
 * 快速排序
 *
 * @author asus
 * @version 1.0
 * @date 2023/5/27 9:34
 */
public class QuickSort {

    public static void main(String[] args) {
       int[] array = {4,3,2,5,1,7,8,9};
       quickRow(array,0,array.length-1);
        System.out.println(Arrays.toString(array));
    }
    public static void quickRow(int[] array, int low, int high) {
        /**
         * i 表示左侧
         * j 表示右侧
         * pivot 标准 (可不可以是中间，可以不可以是0 )
         */
        int[] arr = {10, 13, 2, 4, 5, 9, 11, 1, 6, 7, 19, 34};
        //求中值
        int i,j,pivot;
        if(low>=high){
            return;
        }
        //左侧从哪里开始 0
        i=low;
        //右侧从哪里开始 array.length-1;
        j=high;
        //标准
        pivot = array[low];
        while (i < j) {
            //右侧
            while (array[j] >= pivot && i < j) {
                j--;
            }
            //左侧
            while (array[i] <= pivot && i < j) {
                i++;
            }

            if (i < j) {
                int temp = array[i];
                array[i] = array[j];
                array[j] = temp;
            }
        }
        //交换标准
        array[low] = array[i];
        array[i] = pivot;
        quickRow(array, low, i - 1);
        quickRow(array, i + 1, high);
    }
}

